package hoja.de.trabajo.pkg1;

/* MiRadio.java
 * Mariana Castillo, 12319
 * Pablo Rodriguez, 12374
 * Julio Maldonado, 12377
 * Luis Alburez, 12456
 * Seccion 30, Algoritmos y Estructura de Datos
 * Fecha: 07/07/13
 * Clase que contiene caracteristicas de un radio y metodos que representan acciones de este aparato
 */

import java.text.DecimalFormat;
import java.util.Iterator;
public class MiRadio implements Radio{
    //atributos
    private boolean status;//Encendido o Apagado
    private boolean estacion;   
    private double emisoraMadreFM;   
    private int emisoraMadreAM;   
    private double[] chFM; 
    private int[] chAM;
    
    DecimalFormat obj= new DecimalFormat("###.#");
   //constructor
    public MiRadio(){
       status = false;
       estacion= true;//true fm false am
       emisoraMadreFM = 87.9;//estacion donde se encuentra
       emisoraMadreAM=  530; 
       chFM= new double[12];
       chAM= new int[12];
       for(int i=0; i<chFM.length; i++){
           chFM[i]=87.9;
       }
       for(int j=0;j<chAM.length;j++){
           chAM[j]=530;
       }
    }
    
    //SETS
    public void setStatus(boolean status) {
        this.status = status;
    }
   
    public void setEstacion(boolean estacion) {
        this.estacion = estacion;
    }

    public void setEmisoraMadreFM(double emisoraMadreFM) {
        this.emisoraMadreFM = emisoraMadreFM;
    }

    public void setEmisoraMadreAM(int emisoraMadreAM) {
        this.emisoraMadreAM = emisoraMadreAM;
    }

    public void setChFM(int indice, double chFM1) {
        this.chFM[indice] = chFM1;
    }

    public void setChAM(int indice, int chAM1) {
        this.chAM[indice] = chAM1;
    }
    //GETS
    public boolean isStatus() {
        return status;
    }

    public boolean isEstacion() {
        return estacion;
    }

    public double getEmisoraMadreFM() {
        return emisoraMadreFM;
    }

    public int getEmisoraMadreAM() {
        return emisoraMadreAM;
    }

    public double getChFM(int indice) {
        return chFM[indice];
    }

    public int getChAM(int indice) {
        return chAM[indice];
    }
        
    
    //METODOS 
    //Cambia el estado de la radio de encendido a a apagado
    public void onOff(){
        if (status ==true){
            status = false;
            }
        else{
            status = true;
        }
    }
    
    //Cambia la frecuencia sintoniza FM o AM
    public void cambiarTipo(){
       if (estacion ==true){
            estacion = false;
            }
        else{
            estacion = true;
        }
    }
    
    //Aumenta o cambia la estacion sintonizada diferenciado para FM o AM
    public void sintonizar(){
        if (estacion ==true){
            if (emisoraMadreFM >= 107.9){
            emisoraMadreFM = 87.9;
           }
            else{
            emisoraMadreFM = emisoraMadreFM + 0.2; 
            }
        }
         else{
           if (emisoraMadreAM >= 1610){
            emisoraMadreAM = 530 ;
           }
            else{
            emisoraMadreAM = emisoraMadreAM + 10; 
        }
        }    
        
    }
    //Almacena la emisora actual en una de las 12 casillas disponibles
    public void guardar(int boton){
        if(estacion==true){
            chFM[boton] = emisoraMadreFM;
        }
        else{
            chAM[boton] = emisoraMadreAM;
        }
    }
    
    //Permite ir a las emisoras favoritas almacenadas
    public void llamar(int boton){
        if(estacion ==true){
            emisoraMadreFM = chFM[boton];
        }
        else{
           emisoraMadreAM=chAM[boton];
        }
    }

    //Muestra el estado de MiRadio
    public String toString() {
        String detalles;
        detalles= "\nRADIO\n";
        
        if(status==true){
            detalles+= "Estado: Encendido\n";
            
            if(estacion==true){
            detalles+= "Estacion: FM\n";
            detalles+= "Emisora FM: " + obj.format(emisoraMadreFM) + "\nFavoritos FM: \n";
            detalles+="---------------------------------------------------------------------------------------------------------------------------\n";
                                                                                                                                                   
            for(int fil= 0; fil<chFM.length; fil++){
                detalles+= "("+(fil+1) +".) "+obj.format(chFM[fil])+" ";
            }
     
            }
            else{
                detalles+= "Estacion: AM\n";
                detalles+= "Emisora AM: " + emisoraMadreAM + "\nFavoritos AM: \n";
                detalles+="---------------------------------------------------------------------------------------------------------------------------\n";
                for(int fil= 0; fil<chAM.length; fil++){
                    detalles+= "("+(fil+1) +".) "+obj.format(chAM[fil])+" ";
                }
            }
            detalles+="\n---------------------------------------------------------------------------------------------------------------------------";
        }
        else{
            detalles+= "Estado: Apagado";
        }
        
        return detalles;
        
    }
 
}


